package com.chenxys.algorithm.leetcode;

import java.util.Arrays;
import java.util.List;

/**
 * <p>
 *      <a href="https://leetcode.cn/problems/minimum-time-to-make-array-sum-at-most-x/description/">使数组和小于等于x的最少时间</a><br/>
 *      给你两个长度相等下标从 0 开始的整数数组 nums1 和 nums2 。每一秒，对于所有下标 0 <= i < nums1.length ，nums1[i] 的值都增加 nums2[i] 。操作 完成后 ，你可以进行如下操作：<br/>
 *      选择任一满足 0 <= i < nums1.length 的下标 i ，并使 nums1[i] = 0 。<br/>
 *      同时给你一个整数 x 。<br/>
 *      请你返回使 nums1 中所有元素之和 小于等于 x 所需要的 最少 时间，如果无法实现，那么返回 -1 。<br/>
 *      例: <br/>
 *          输入：nums1 = [1,2,3], nums2 = [1,2,3], x = 4<br/>
 *          输出：3<br/>
 *          解释：<br/>
 *              第 1 秒，我们对 i = 0 进行操作，得到 nums1 = [0,2+2,3+3] = [0,4,6] 。<br/>
 *              第 2 秒，我们对 i = 1 进行操作，得到 nums1 = [0+1,0,6+3] = [1,0,9] 。<br/>
 *              第 3 秒，我们对 i = 2 进行操作，得到 nums1 = [1+1,0+2,0] = [2,2,0] 。<br/>
 *              现在 nums1 的和为 4 。不存在更少次数的操作，所以我们返回 3 。<br/>
 * </p>
 * @author Chenxys
 * @version V1.0
 * @Package com.chenxys.algorithm.leetcode
 * @date 2024/1/19 10:51
 * @Copyright ©
 * @descript 未完成
 */
@SuppressWarnings("all")
public class LeetCode2809 {

    /**
     * <p>
     *     使数组和小于等于x的最少时间
     * </p>
     */
    public static int minimumTime(List<Integer> nums1, List<Integer> nums2, int x) {
        int N = nums1.size();
        List<Integer> ans = nums1;
        int sum = 0;
        int tmp = 0;
        int adVal = 0;
        for (int i = 0; i < N; i++) {
            ans.set(i, 0);
            for (int j = i + 1; j < N; j++) {
                adVal = ans.get(j) + nums2.get(j);
                sum += adVal;
                ans.set(j, adVal);
            }
            for (int j = i - 1; j >= 0; j--) {
                adVal = ans.get(j) + nums2.get(j);
                sum += adVal;
                ans.set(j, adVal);
            }
            tmp++;
            if (sum == x) return tmp;
            sum = 0;
        }
        return -1;
    }

    /**
     * <p>
     *     使数组和小于等于x的最少时间
     * </p>
     */
    public static int checkMinimumTime(List<Integer> nums1, List<Integer> nums2, int x) {

        return 0;
    }

    public static void main(String[] args) {
        List<Integer> nums1 = Arrays.asList(4,4,9,10);
        List<Integer> nums2 = Arrays.asList(4,4,1,3);
        System.out.println(minimumTime(nums1, nums2, 16));
    }
}
